#ifndef _RENZO_DYNLIB_MANAGER_
#define _RENZO_DYNLIB_MANAGER_

#include "RenzoMustHave.h"

/*
@description
DynLibManager organizes the binding of DLLs. Loaded DLLs are stored in a list so that no DLLs are loaded twice.
*/
namespace Renzo {
class DynLibManager
{
public:
	static DynLibManager* instance();

	DynLib* load(const char* dll);
	void unload(DynLib* dll);
private:
	DynLibManager(void);
	~DynLibManager(void);

	static DynLibManager* dynLibManager;

	typedef std::map<const char*, DynLib*> DynLibList;
	DynLibList libs;
};
}

#endif